package command

import (
	"codejy/structdef"
	"codejy/utils"
	"flag"
	"fmt"
)

type DebugModeCmd struct {
	debugMode bool //主文件路径
	priority  int  //优先级
}

func init() {
	RegisterCommand(&DebugModeCmd{
		priority: 1000,
	})
}

// 绑定
func (m *DebugModeCmd) Bind() {
	flag.BoolVar(&m.debugMode, m.GetName(), false, m.GetDesc())
}

// 满足条件才执行命令
func (m *DebugModeCmd) Condition() bool {
	return m.debugMode
}

// 执行命令
func (m *DebugModeCmd) Execute(threadStore *structdef.ThreadStore) {
	utils.Debug = m.debugMode
	utils.DebugLog("核心调试模式:", func() {
		fmt.Println(utils.Debug)
	})
}

// 获取命令名称
func (m *DebugModeCmd) GetName() string {
	return "d"
}

// 获取命令描述
func (m *DebugModeCmd) GetDesc() string {
	return "是否开启调试模式,默认不开启,开启后会打印调试系统日志,比如: -d"
}

// 优先级  ,0最低...
func (m *DebugModeCmd) GetPriority() int {
	return m.priority
}

// 是否终止
func (m *DebugModeCmd) IsExit() bool {
	return false
}
